package com.ww.springboot.boot.algorithm.leetcode1;

/**
 * 描述：
 *
 * @author 🧑 ‍wanwei
 * @since 2022-03-30 09:17
 */
public class BG1004最大连续1的个数III {

    public static void main(String[] args) {

        int[] nums = {0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1};

        System.out.println(longestOnes(nums, 3));

    }


    /**
     * 使用滑动窗口
     * 维护左右两个指针,左右中间的间隙(0)不能超过k 统计最大值
     *
     * @param nums
     * @param k
     * @return
     */
    public static int longestOnes(int[] nums, int k) {
        //窗口
        int left = 0;
        //坑数
        int pitNums = 0;
        int max = 0;
        for (int right = 0; right < nums.length; right++) {
            pitNums += 1 - nums[right];

            //k值够大时 右指针一直往前移动 否则左指针往前移动
            while (pitNums > k) {
                pitNums -= 1 - nums[left];
                left++;
            }
            max = Math.max(max, right - left + 1);

        }
        return max;
    }
}
